Register Rematerialization In GCC
نویسنده
چکیده
In most modern processor architectures, difference in data access time for values kept in registers as compared to those in memory is quite high. Thus, compilers should implement efficient register allocation strategies to improve the runtime performance of the code. Register rematerialization is a technique to improve register allocation effectively by improving spill code generation. It is often desirable to compute expressions at a “use” rather than use an earlier spilled value. Normally, “rematerializable” values are derived from registers that are live throughout the function. On register-starved architectures with with addressing modes supporting limited displacement, spilling values, which can be rematerialized, incurs an additional loss in performance due to instructions generated to fetch data from the frame. Hence, rematerialization aids in good usage of registers to give a good gain in execution performance of the code generated. Experimental results indicate a gain of 1-6% in code size and 1-4% improvement in execution performance.
منابع مشابه
Expression Rematerialization for VLIW DSP Processors with Distributed Register Files
Spill code is the overhead of memory load/store behavior if the available registers are not sufficient to map live ranges during the process of register allocation. Previously, works have been proposed to reduce spill code for the unified register file. For reducing power and cost in design of VLIW DSP processors, distributed register files and multibank register architectures are being adopted...
متن کاملRegister Reverse Rematerialization
Reversible computing could be in more or less long term mandatory for minimizing heat dissipation inherent to computing. It aims at keeping all information on input and intermediate values available at any step of the computation. Rematerialization in register allocation amounts to recomputing values instead of spilling them in memory when registers run out. In this paper we detail a heuristic ...
متن کاملHare: a Hierarchical Allocator for Registers in Multiple Issue Architectures
In this paper we present HARE, a new hierarchical approach to register allocation and assignment for multiple issue load/store architectures. HARE makes extensive use of execution estimates and functional unit availability information to select values for spilling and to place the spill code in locations that minimize the increase in the overall execution time of the program. Incorporated in HA...
متن کاملOptimal Register Allocation in Polynomial Time
A graph-coloring register allocator that optimally allocates registers for structured programs in polynomial time is presented. It can handle register aliasing. The assignment of registers is optimal with respect to spill and rematerialization costs, register preferences and coalescing. The register allocator is not restricted to programs in SSA form or chordal interference graphs. It requires ...
متن کاملThesis Proposal Towards a More Principled Compiler: Progressive Backend Compiler Optimization
As we reach the limits of processor performance and architectural complexity increases, more principled approaches to compiler optimization are necessary to fully exploit the performance potential of modern architectures. Existing compiler optimizations are typically heuristic-driven and lack a detailed model of the target architecture. In this proposal I develop the beginnings of a framework f...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2004